home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 4 / CU Amiga Magazine's Super CD-ROM 04 (1996)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1996-11].iso / magazine / psion / misc / ml3.lzx / ml3.opl
Text File  |  1993-01-22  |  8KB  |  294 lines

  1. proc ML3:
  2.     global prompt$(20),prompt&    REM Vars
  3.     local g%    REM More vars
  4.     if not exist ("M:\Miles")    REM Change "M" to A or B if you want
  5.         create "M:\Miles",a,time$,startpo$,startmi&,endpos$,endmile&,totb&,totp&
  6.     else
  7.         open "M:\Miles",a,time$,startpo$,startmi&,endpos$,endmile&,totb&,totp&
  8.     endif
  9.         last
  10.         gat 0,0
  11.         gfill 240,14,2
  12.         gat 4,10
  13.         gtmode 1
  14.         gstyle 1    REM Setting up top line of window
  15.         gprint "ML3 - Mileage logging for the Series 3"
  16.         gcreate(0,16,240,64,1)    REM Create a window for the rest
  17.     do    REM Get in the loop
  18.         gat 0,16
  19.         gstyle 9
  20.         prompt$=upper$(A.endpos$)    REM Get Last location from the file
  21.         gprintb "LAST LOCATION WAS "+prompt$,240,2    REM Show the above
  22.         gat 0,34
  23.         prompt&=A.endmile&    REM get last mileage
  24.         gprintb "LAST MILEAGE LOGGED WAS "+gen$(prompt&,10)+" MILES",240,2
  25.         gat 0,38
  26.         glineby 240,0    REM Make the screen look good with graphics
  27.         gat 0,39
  28.         glineby 240,0    REM Make the above line 'thick'
  29.         gat 0,51
  30.         gstyle 1    REM Setup prompts for user
  31.         gprintb "[ENTER] to log a trip",240,2
  32.         gat 0,62    REM another prompt
  33.         gprintb "[HELP] or [MENU] for other options",240,2
  34.         g%=get    REM Get keystrokes
  35.         if g%=13    REM Enter?
  36.             log:
  37.         endif
  38.         if g%=291    REM Help?
  39.             help:
  40.         endif
  41.         if g%=290    REM Menu key?
  42.             domenu:
  43.         endif
  44.         if kmod and 8    REM Psion key?
  45.             dopsion:(g%-512)
  46.         endif
  47.     until g%=27    REM Esc key ALSO exits
  48. endp
  49.  
  50.  
  51. proc log:    REM This is where we write trip details to file
  52.     local d%,pick%,place$(30),mile&,lastloc$(30),lastmil&
  53.     last    REM Make sure we're at the end of the file
  54.     dinit "Log A Trip"
  55.     dposition 0,1    REM Set up Trip Dialog Box
  56.     dtext "","úLast location was "+ A.endpos$
  57.     lastloc$=A.endpos$    REM Convert some vars
  58.     dedit place$,"New location is"
  59.     prompt$=place$    REM Need this to refresh main window text
  60.     dtext "","úLast mileage was "+fix$( A.endmile&,0,10)
  61.     lastmil&=A.endmile&
  62.     dlong mile&,"New mileage is", A.endmile&+1,10000000
  63.     mile&=prompt&    REM also need this to refresh mileage shown on main window
  64.     dchoice pick%,"Kind of trip","Business,Personal"
  65.     dialog
  66.     if pick%=1    REM Business Trip
  67.         A.totb&=mile&-lastmil&    REM Assign inputs to file
  68.         A.totp&=0
  69.     elseif pick%=2    REM Personal trip
  70.         A.totp&=mile&-lastmil&    REM Assign inputs to file
  71.         A.totb&=0    REM Just in case
  72.     elseif pick%=0    REM They didn't want to record trip
  73.         return    REM so get outta here
  74.     endif
  75.     A.time$=mid$(Datim$,5,17)    REM Put date&time into record
  76.     A.startpo$=upper$(lastloc$)    REM Juggling!
  77.     A.startmi&=lastmil&    REM Juggling!
  78.     A.endpos$=upper$(place$)    REM More juggling!
  79.     A.endmile&=mile&
  80.     append    REM Write trip details to file
  81.     return
  82. endp
  83.  
  84.  
  85. proc totals:
  86. local pick%,busmil&,persmil&
  87.     busmil&=0
  88.     first
  89.     do
  90.     busmil&=busmil&+(A.totb&)
  91.     next
  92.     until eof
  93.     persmil&=0
  94.     first
  95.     do
  96.     persmil&=persmil&+(A.totp&)
  97.     next
  98.     until eof
  99.     dinit
  100.     dtext "","TOTAL MILES RECORDED",$302
  101.     dtext "","Total Business Miles Are "+gen$(busmil&,10)+" miles."
  102.     dtext "","Total Personal Miles Are "+gen$(persmil&,10)+" miles."
  103.     dtext "","Total Combined Miles Are "+gen$(busmil&+persmil&,10)+" miles."
  104.     dialog
  105.     last    REM go to last record
  106.     prompt$=upper$(A.endpos$)
  107.     prompt&=A.endmile&
  108. endp
  109.  
  110. proc domenu:
  111. local m%,m$(1)
  112. minit
  113. mcard "Mlog","About",%a,"Export",%e,"Totals",%t,"Setup",%s,"Quit",%x
  114. m%=menu
  115. if m%=97    REM About?
  116.     about:
  117. elseif m%=101    REM Export?
  118.     export:
  119. elseif m%=116    REM Totals?
  120.     totals:
  121. elseif m%=115    REM Setup?
  122.     setup:
  123. elseif m%=120    REM Quit?
  124.     stop
  125. endif
  126. endp
  127.  
  128. proc dopsion:(kv%)
  129. local choice%
  130. choice%=kv%
  131. if choice%=97    REM About selected?
  132.     about:
  133. elseif choice%=101    REM Export File?
  134.     export:
  135. elseif choice%=116    REM Totals?
  136.     totals:    
  137. elseif choice%=115    REM Setup?
  138.     setup:
  139. elseif choice%=120    REM Quit?
  140.     stop
  141. endif
  142. endp
  143.  
  144. proc about:
  145. dinit
  146. dtext "","ML3 vers 1.0",$102
  147. dtext "","¸1993 Les Hall",$102
  148. dtext "","CIS 71053,1676",$102
  149. dtext "",chr$(34)+"pax vobiscum"+chr$(34),$101
  150. dialog
  151. endp
  152.  
  153. proc setup:
  154. local choice%,firsloc$(20),firsmil&
  155. beep 1,400 :beep 1,200 :beep 1,400 :beep 1,200
  156. dinit
  157. dtext "","ML3 SETUP - WARNING!",$302
  158. dtext "","You are about to erase or create a",2
  159. dtext "","Mlog.ODB File. Are you sure? Go back press",2
  160. dtext "","[Help] then select þSetup if unsure.",2 
  161. dbuttons "Not Sure",-27,"Positive",13
  162. choice%=dialog
  163. if choice%=13
  164.     close 
  165.     delete ("M:\Miles.odb")
  166.     create "M:\Miles",A,time$,startpo$,startmi&,endpos$,endmile&,totb&,totp&
  167.     dinit
  168.     dtext "","Enter Initial Location & Mileage",$302
  169.     firsloc$="Home/Work etc"
  170.     dedit firsloc$,"Enter Initial Location:"
  171.     dlong firsmil&,"Enter Initial Mileage :",1,10000000
  172.     dialog
  173.         A.startpo$="Start of ML3 File"
  174.         A.endpos$=firsloc$
  175.         A.endmile&=firsmil&
  176.         A.time$=mid$(datim$,5,17)
  177.         append 
  178. endif
  179. endp
  180.  
  181. proc export:
  182. local busmil&,persmil&
  183. lopen "M:\WRD\milelog.wrd"
  184. busy "Saving Milelog.WRD",3
  185. lprint "MILEAGE LOG EXPORTED ON "+DATIM$
  186. lprint chr$(13)
  187. lprint "This is a tab delimited file. Please set up six tabs to view properly"
  188. lprint "The list below shows what each tab/column represents"
  189. lprint "DATE&TIME    START LOC'    START MILES    END LOC'    END MILES    BUS' MILES    PER' MILES"
  190. lprint chr$(13)
  191. first
  192. while not eof
  193. lprint A.time$+chr$(9)+A.startpo$+chr$(9),A.startmi&,chr$(9)+A.endpos$+chr$(9),A.endmile&,chr$(9),A.totb&,chr$(9),A.totp&
  194. next
  195. endwh
  196. busmil&=0
  197. first
  198. do
  199. busmil&=busmil&+(A.totb&)
  200. next
  201. until eof
  202. lprint chr$(13)
  203. lprint "Total Business Miles Are ";busmil&;" Miles"
  204. persmil&=0
  205. first
  206. do
  207. persmil&=persmil&+(A.totp&)
  208. next
  209. until eof
  210. lprint "Total Personal Miles Are ";persmil&;" Miles"
  211. busmil&=0
  212. persmil&=0
  213. first
  214. do
  215. busmil&=busmil&+(A.totb&)
  216. next
  217. until eof
  218. first
  219. do
  220. persmil&=persmil&+(A.totp&)
  221. next
  222. until eof
  223. lprint "Total Combined Miles Are ";busmil&+persmil&;" Miles"
  224. lprint chr$(13)
  225. lprint "********* END OF MILEAGE LOG *******"
  226. lclose
  227. last
  228. busy off 
  229. endp
  230.  
  231. proc help:
  232. local g%
  233. top::
  234. dinit
  235. dtext ""," Help:ML3",$300
  236. dtext "","þUsing ML3",$500
  237. dtext "","þSetup",$500
  238. dtext "","þExporting",$500
  239. dtext "","þKudos, Thanks",$500
  240. g%=dialog
  241. if g%=0
  242.     return
  243. elseif g%=291
  244.     return
  245. elseif g%=2
  246.     dinit
  247.     dtext "","Help: Using ML3 - Run Setup First!",$300
  248.     dtext "","Press [Enter] to open the trip input",0
  249.     dtext "","dialog box. Enter your current",0
  250.     dtext "","location & then the current mileage. ",0
  251.     dtext "","Then choose wether it was a Business or",0
  252.     dtext "","a Personal trip. All this data is saved",0
  253.     dtext "","to Mlog.ODB on Internal memory.",0
  254.     dialog
  255.     goto top::
  256. elseif g%=3
  257.     dinit
  258.     dtext "","Help: ML3 Setup",$300
  259.     dtext "","You must select Setup once before you can",0
  260.     dtext "","use ML3. Either select Setup from the ",0
  261.     dtext "","menu or use Psion-S. You are given the ",0
  262.     dtext "","chance to escape if selected by mistake!",0
  263.     dtext "","Otherwise input your initial location",0
  264.     dtext "","& mileage. Mlog.ODB is created on M:",0
  265.     dialog
  266.     goto top::
  267. elseif g%=4
  268.     dinit
  269.     dtext "","Help: Exporting A Mileage Log",$300
  270.     dtext "","When you select Export from the menu or",0
  271.     dtext "","Psion-E from the keyboard, you export a",0
  272.     dtext "","tab-delimited file (Miles.WRD) to your",0
  273.     dtext "","WRD directory on your Internal memory.",0
  274.     dtext "","Print from there or export it to your",0
  275.     dtext "","Macintosh or PC. Try it out!",0
  276.     dialog
  277.     goto top::
  278. elseif g%=5
  279.     dinit
  280.     dtext "","Help: Kudos, Thanks",$300
  281.     dtext "","First, thanks to Psion Inc & Psion PLC",0
  282.     dtext "","for making such cool little gizmos.",0
  283.     dtext "","Thanks also to all the members of the",0
  284.     dtext "","Palmtop Forum who have shared their",0
  285.     dtext "","ideas & code with their fellow users.",0
  286.     dtext "","Special thanks to Jim, Mark & Rowan.",0
  287.     dialog
  288.     goto top::
  289.  
  290. endif
  291. ENDP
  292.  
  293.